home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Gekkan Dennou Club 140
/
Gekkan Dennou Club - 2000.1 Vol. 140 (Japan).7z
/
Gekkan Dennou Club - 2000.1 Vol. 140 (Japan) (Track 1).bin
/
tools
/
has060
/
coldfire.doc
next >
Wrap
Text File
|
1999-11-17
|
11KB
|
274 lines
────────────────────────────────────
High-speed Assembler ─ 68060 対応版
HAS060.X version 3.09+87
< ColdFire 命令一覧 >
1999/11/17
M.Kamada
────────────────────────────────────
ColdFire(ColdFire V2~V4 コア)で使える全命令と、そのオペレーションサ
イズおよびアドレッシングモードをまとめてみました。68000 ファミリの命令表
と比較することで、削除された命令やオペレーションサイズ、アドレッシングな
どを知ることができます。
このドキュメントの内容は保証できません。まだ手元の資料が不十分で実物も
見ていないので、間違いがあると思われます。また、この記事の内容について質
問されても答えられない場合があります。
(99-02-10版)
━< アドレッシングモード >━━━━━━━━━━━━━━━━━━━━━━
ColdFire(ColdFire V2~V4 コア)で使用できるアドレッシングモードは、以
下の通り。
┌───┬─────────────────────┐
│ D │Dn │
├───┼─────────────────────┤
│ A │An │
├───┼─────────────────────┤
│ M │(An) │
├───┼─────────────────────┤
│ + │(An)+ │
├───┼─────────────────────┤
│ - │-(An) │
├───┼─────────────────────┤
│ W │(d16,An) │
├───┼─────────────────────┤
│ X │(d8,An,Xi.L) │
│ │(d8,An,Xi.L*2) │
│ │(d8,An,Xi.L*4) │
├───┼─────────────────────┤
│ Z │(xxx).W │
│ │(xxx).L │
├───┼─────────────────────┤
│ P │(d16,PC) │
│ │(d8,PC,Xi.L) │
│ │(d8,PC,Xi.L*2) │
│ │(d8,PC,Xi.L*4) │
├───┼─────────────────────┤
│ I │#<data> │
└───┴─────────────────────┘
メモ:
インデックスレジスタはロングワードサイズに限る。
スケールファクタは 4 倍までで、8 倍は不可。
フルフォーマットのアドレッシングは不可。
SP(A7)は常にロングワード境界にアラインメントされる。
━< 制御レジスタ >━━━━━━━━━━━━━━━━━━━━━━━━━━
ColdFire(ColdFire V2~V4 コア)で使用できる制御レジスタは、以下の通り。
┌──┬────┬──┬─────────────────┐
│コード│表記 │バー │ 内容 │
│ │ │ション │ │
├──┼────┼──┼─────────────────┤
│$002│CACR │234 │Cache Control Register │
│$003│TCR │2-- │Transration Control Register │
│$004│ACR0 │234 │Access Control Register 0 │
│$005│ACR1 │234 │Access Control Register 1 │
│$006│ACR2 │2-- │Access Control Register 2 │
│$007│ACR3 │2-- │Access Control Register 3 │
│$08n│Rn │234 │* MOVE to Rn │
│$18n│Rn │234 │* MOVE from Rn │
│$801│VBR │234 │Vector Base Register │
│$80E│SR │2-- │* Status Register │
│$80F│PC │-34 │Program Counter │
│$C00│ROMBAR │234 │ROM Base Address Register │
│$C04│RAMBAR │-34 │SRAM Base Address Register │
│$C04│RAMBAR0 │2-- │RAM Base Address Register 0 │
│$C05│RAMBAR1 │2-- │RAM Base Address Register 1 │
│$C0F│MBAR │234 │Module Base Address Register │
└──┴────┴──┴─────────────────┘
メモ:
* が付いているものは DEBUG インタフェイスからのアクセ
スに限る(MOVEC ではアクセスできない)。
TCR、ACR2、ACR3 は V2 でも使えないようだ。
━< ColdFire の全命令 >━━━━━━━━━━━━━━━━━━━━━━━
ColdFire(ColdFire V2~V4 コア)の全命令の一覧。
┌───────────────────┬──┬─────┐
│ 命令 │バー │アドレッシ│
│ │ション │ングモード│
├───────────────────┼──┼─────┤
│ADD.L <ea>,Dx │234 │DAM+-WXZPI│
│ADD.L Dy,<ea> │234 │ M+-WXZ │
│ADDA.L <ea>,Ax │234 │DAM+-WXZPI│
│ADDI.L #<data>,Dx │234 │D │
│ADDQ.L #<data>,<ea> │234 │DAM+-WXZ │
│ADDX.L Dy,Dx │234 │ │
│AND.L <ea>,Dx │234 │D M+-WXZPI│
│AND.L Dy,<ea> │234 │ M+-WXZ │
│ANDI.L #<data>,Dx │234 │D │
│ASL.L #<data>,Dx │234 │ │
│ASL.L Dy,Dx │234 │ │
│ASR.L #<data>,Dn │234 │ │
│ASR.L Dy,Dx │234 │ │
│Bcc.L <label> │--4 │ │
│Bcc.S <label> │234 │ │
│Bcc.W <label> │234 │ │
│BCHG.B #<data>,<ea> │234 │ M+-W │
│BCHG.B Dy,<ea> │234 │ M+-WXZ │
│BCHG.L #<data>,Dx │234 │D │
│BCHG.L Dy,Dx │234 │D │
│BCLR.B #<data>,<ea> │234 │ M+-W │
│BCLR.B Dy,(d8,Ax,Xi) │-34 │ X │
│BCLR.B Dy,<ea> │234 │ M+-W Z │
│BCLR.L #<data>,Dx │234 │D │
│BCLR.L Dy,Dx │234 │D │
│BRA.L <label> │--4 │ │
│BRA.S <label> │234 │ │
│BRA.W <label> │234 │ │
│BSET.B #<data>,<ea> │234 │ M+-W │
│BSET.B Dy,(d8,Ax,Xi) │-34 │ X │
│BSET.B Dy,<ea> │234 │ M+-W Z │
│BSET.L #<data>,Dx │234 │D │
│BSET.L Dy,Dx │234 │D │
│BSR.L <label> │--4 │ │
│BSR.S <label> │234 │ │
│BSR.W <label> │234 │ │
│BTST.B #<data>,<ea> │234 │ M+-W │
│BTST.B Dy,<ea> │234 │ M+-WXZPI│
│BTST.L #<data>,Dx │234 │D │
│BTST.L Dy,Dx │234 │D │
│CLR.B <ea> │234 │D M+-WXZ │
│CLR.L <ea> │234 │D M+-WXZ │
│CLR.W <ea> │234 │D M+-WXZ │
│CMP.B <ea>,Dx │--4 │DAM+-WXZPI│
│CMP.L <ea>,Dx │234 │DAM+-WXZPI│
│CMP.W <ea>,Dx │--4 │DAM+-WXZPI│
│CMPA.L <ea>,Ax │234 │DAM+-WXZPI│
│CMPA.W <ea>,Ax │--4 │DAM+-WXZPI│
│CMPI.B #<data>,Dx │--4 │D │
│CMPI.L #<data>,Dx │234 │D │
│CMPI.W #<data>,Dx │--4 │D │
│CPUSH (Ax) │-34 │ │
│DIVS.L <ea>,Dx │-34 │D M+-W │
│DIVS.W <ea>,Dx │-34 │D M+-WXZPI│
│DIVU.L <ea>,Dx │-34 │D M+-W │
│DIVU.W <ea>,Dx │-34 │D M+-WXZPI│
│EOR.L Dy,<ea> │234 │D M+-WXZ │
│EORI.L #<data>,Dx │234 │D │
│EXT.L Dx │234 │ │
│EXT.W Dx │234 │ │
│EXTB.L Dx │234 │ │
│HALT │234 │ │
│ILLEGAL │234 │ │
│JMP <ea> │234 │ M WXZP │
│JSR <ea> │234 │ M WXZP │
│LEA.L <ea>,Ax │234 │ M WXZP │
│LINK.W Ax,#<data> │234 │ │
│LSL.L #<data>,Dx │234 │ │
│LSL.L Dy,Dx │234 │ │
│LSR.L #<data>,Dx │234 │ │
│LSR.L Dy,Dx │234 │ │
│MAC.wl Ry.ul,Rx.ul │-34 │ │
│MAC.wl Ry.ul,Rx.ul,<shift> │-34 │ │
│MACL.wl Ry.ul,Rx.ul,<ea>,Rw │-34 │ M+-W │
│MACL.wl Ry.ul,Rx.ul,<shift>,<ea>&,Rw │-34 │ M+-W │
│MACL.wl Ry.ul,Rx.ul,<shift>,<ea>,Rw │-34 │ M+-W │
│MOV3Q.L #<data>,<ea> │--4 │DAM+-WXZ │
│MOVE.bw #<data>,(d16,Ax) │--4 │ W │
│MOVE.bwl #<data>,<ea> │234 │D M+- │
│MOVE.bwl (Ay)+,<ea> │234 │D M+-WXZ │
│MOVE.bwl (Ay),<ea> │234 │D M+-WXZ │
│MOVE.bwl (d16,Ay),<ea> │234 │D M+-W │
│MOVE.bwl (d16,PC),<ea> │234 │D M+-W │
│MOVE.bwl (d8,Ay,Xi),(d16,Ax) │--4 │ W │
│MOVE.bwl (d8,Ay,Xi),<ea> │234 │D M+- │
│MOVE.bwl (d8,PC,Xi),(d16,Ax) │--4 │ W │
│MOVE.bwl (d8,PC,Xi),<ea> │234 │D M+- │
│MOVE.bwl (xxx).wl,(d16,Ax) │--4 │ W │
│MOVE.bwl (xxx).wl,<ea> │234 │D M+- │
│MOVE.bwl -(Ay),<ea> │234 │D M+-WXZ │
│MOVE.bwl Dy,<ea> │234 │D M+-WXZ │
│MOVE.L <ea>,ACC │-34 │DA I│
│MOVE.L <ea>,MACSR │-34 │DA I│
│MOVE.L <ea>,MASK │-34 │DA I│
│MOVE.L ACC,Rx │-34 │ │
│MOVE.L MACSR,CCR │-34 │ │
│MOVE.L MACSR,Rx │-34 │ │
│MOVE.L MASK,Rx │-34 │ │
│MOVE.W <ea>,CCR │234 │D I│
│MOVE.W <ea>,SR │234 │D I│
│MOVE.W CCR,Dx │234 │D │
│MOVE.W SR,Dx │234 │D │
│MOVE.wl Ay,<ea> │234 │D M+-WXZ │
│MOVEA.wl <ea>,Ax │234 │D M+-WXZPI│
│MOVEC.L Ry,Rc │234 │ │
│MOVEM.L <ea>,<list> │234 │ M W │
│MOVEM.L <list>,<ea> │234 │ M W │
│MOVEQ.L #<data>,Dx │234 │ │
│MSAC.wl Ry.ul,Rx.ul │234 │ │
│MSAC.wl Ry.ul,Rx.ul,<shift> │234 │ │
│MSACL.wl Ry.ul,Rx.ul,<ea>,Rw │234 │ M+-W │
│MSACL.wl Ry.ul,Rx.ul,<shift>,<ea>&,Rw │234 │ M+-W │
│MSACL.wl Ry.ul,Rx.ul,<shift>,<ea>,Rw │234 │ M+-W │
│MULS.L <ea>,Dx │234 │D M+-W │
│MULS.W <ea>,Dx │234 │D M+-WXZPI│
│MULU.L <ea>,Dx │234 │D M+-W │
│MULU.W <ea>,Dx │234 │D M+-WXZPI│
│MVS.B <ea>,Dx │--4 │DAM+-WXZPI│?Ay
│MVS.W <ea>,Dx │--4 │DAM+-WXZPI│
│MVU.B <ea>,Dx │--4 │DAM+-WXZPI│?Ay
│MVU.W <ea>,Dx │--4 │DAM+-WXZPI│
│NEG.L Dx │234 │D │
│NEGX.L Dx │234 │D │
│NOP │234 │ │
│NOT.L Dx │234 │D │
│OR.L <ea>,Dx │234 │D M+-WXZPI│
│OR.L Dy,<ea> │234 │ M+-WXZ │
│ORI.L #<data>,Dx │234 │D │
│PEA.L <ea> │234 │ M WXZP │
│PULSE │234 │ │
│REMS.L <ea>,Dx │-34 │D M+-W │
│REMU.L <ea>,Dx │-34 │D M+-W │
│RTE │234 │ │
│RTS │234 │ │
│SATS.L Dx │--4 │D │
│Scc.B Dx │234 │D │
│STOP #<data> │234 │ │
│SUB.L <ea>,Dx │234 │DAM+-WXZPI│
│SUB.L Dy,<ea> │234 │ M+-WXZ │
│SUBA.L <ea>,Ax │234 │DAM+-WXZPI│
│SUBI.L #<data>,Dx │234 │D │
│SUBQ.L #<data>,<ea> │234 │DAM+-WXZ │
│SUBX.L Dy,Dx │234 │ │
│SWAP.W Dx │234 │ │
│TAS.B <ea> │--4 │ M+-WXZ │
│TRAP #<vector> │234 │ │
│TRAPF │234 │ │
│TRAPF.L #<data> │234 │ │
│TRAPF.W #<data> │234 │ │
│TST.B <ea> │234 │D M+-WXZPI│
│TST.L <ea> │234 │DAM+-WXZPI│
│TST.W <ea> │234 │DAM+-WXZPI│
│UNLK Ax │234 │ │
│WDDATA.bwl <ea> │234 │ M+-WXZ │
│WDEBUG.L <ea> │234 │ M W │
└───────────────────┴──┴─────┘
メモ:
整数演算命令の多くがロングワードサイズに限定された。
DBRA やローテートなどの基本的な命令も一部削除された。
アドレッシングモードが Dn のみに限定された命令がある。
積和演算命令(MAC)が追加された。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
(EOF)